
package TokensDelLenguaje;

import PolacaInversa.Registro;

public class Token_Identificador extends Token_Cadena implements Cloneable, Token_Dato{
    
    // Maximo de caracteres para el identificador
    public static final int MAX_VAR = 12;
    
    public Token_Identificador(String identificador){
        super(identificador);
        setId(Tokens.identificador);
    }

    public Token_Identificador(Tokens tokens) {
        super("");
        setId(Tokens.ilegal);
    }
    
    @Override
    public void setCadena(String s) {
      if(s.length() > MAX_VAR) {
        contenido = s.substring(0, MAX_VAR);
      }
      else {
        contenido = s;
      }
    }

    public int getTamano() {
        return 0;
    }
      
    @Override
    public Object clone(){
        Token_Identificador copia=null;
       
        copia=(Token_Identificador)super.clone();

        return copia;
    }
   
    @Override
   public String toString(){
       return ("[ Id: " + this.getCadena() + " ]");
   }
    
    public String conversion(Registro r){
        String s = "";
        /*s += "MOV " + r.nombre + ", 0\n";
        s += "MOV " + r.nombre.substring(r.nombre.length()-2) + ", " + this.getNombre() + "\n";*/
        /*s += "MOV eax, 0\n";
        s += "MOV ax, " + this.getNombre() + "\n";
        s += "MOV " + r.nombre + ", " + "eax\n";*/
        s += "MOV " + r.nombre + ", 0\n";
        s += "MOV " + r.nombre.substring(r.nombre.length()-2) + ", " + this.getNombre() + "\n";
        return s;
    }

}
